/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package threeds.Model;

import java.io.Serializable;


/**
 * Módulo MER
 * Essa classe é um modelo da Associação entre Relacionamento e atributo do MER, contem seus atributos privados e métodos para acesso aos atributos
 * //author Eduardo, Maylon e Kamilla
 */
//Entity
//Table(name = "associacaorelacionamentoatributo", catalog = "databasethreeds", schema = "public")
//XmlRootElement
//NamedQueries({
    //NamedQuery(name = "AssociacaoRelacionamentoAtributo.findAll", query = "SELECT a FROM AssociacaoRelacionamentoAtributo a"),
    //NamedQuery(name = "AssociacaoRelacionamentoAtributo.findByIdentificador", query = "SELECT a FROM AssociacaoRelacionamentoAtributo a WHERE a.identificador = :identificador"),
    //NamedQuery(name = "AssociacaoRelacionamentoAtributo.findByCodigo", query = "SELECT a FROM AssociacaoRelacionamentoAtributo a WHERE a.codigo = :codigo")})
public class AssociacaoRelacionamentoAtributo implements Serializable {
    private static final long serialVersionUID = 1L;
    //Basic(optional = false)
    //Column(name = "identificador")
    private boolean identificador;
    //Id
    //Basic(optional = false)
    //Column(name = "codigo")
    private String codigo;
    //JoinColumn(name = "nomerelacionamento", referencedColumnName = "nome")
    //ManyToOne(optional = false)
    private Relacionamento nomerelacionamento;
    //JoinColumn(name = "nomeatributo", referencedColumnName = "nome")
    //ManyToOne(optional = false)
    private AtributoMER nomeatributo;

    /**
     * Método Construtor da classe sem parametros
     */
    public AssociacaoRelacionamentoAtributo() {
    }

    /**
     * Método Construtor da classe
     * //param identificador
     * //param nomerelacionamento
     * //param nomeatributo 
     */
    public AssociacaoRelacionamentoAtributo(boolean identificador, Relacionamento nomerelacionamento, AtributoMER nomeatributo) {
        this.identificador = identificador;
        this.nomerelacionamento = nomerelacionamento;
        this.nomeatributo = nomeatributo;
        this.codigo= nomeatributo.getNome()+nomerelacionamento.getNome();
    }



    /**
     * Retorna o valor 
     * //return 
     */
    public boolean getIdentificador() {
        return identificador;
    }


    /**
     * Retorna o valor 
     * //return 
     */
    public String getCodigo() {
        return codigo;
    }


    /**
     * Retorna o valor 
     * //return 
     */
    public Relacionamento getNomerelacionamento() {
        return nomerelacionamento;
    }

    /**
     * Atribuir valor 
     * //param 
     */
    public void setNomerelacionamento(Relacionamento nomerelacionamento) {
        this.nomerelacionamento = nomerelacionamento;
    }

    /**
     * Retorna o valor 
     * //return 
     */
    public AtributoMER getNomeatributo() {
        return nomeatributo;
    }

    /**
     * Atribuir valor 
     * //param 
     */
    public void setNomeatributo(AtributoMER nomeatributo) {
        this.nomeatributo = nomeatributo;
    }

    //Override
    public int hashCode() {
        int hash = 0;
        hash += (codigo != null ? codigo.hashCode() : 0);
        return hash;
    }

    //Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof AssociacaoRelacionamentoAtributo)) {
            return false;
        }
        AssociacaoRelacionamentoAtributo other = (AssociacaoRelacionamentoAtributo) object;
        if ((this.codigo == null && other.codigo != null) || (this.codigo != null && !this.codigo.equals(other.codigo))) {
            return false;
        }
        return true;
    }

    /**
     * Retorna uma String para a classe
     * //return 
     */
    //Override
    public String toString() {
        return "model.AssociacaoRelacionamentoAtributo[ codigo=" + codigo + " ]";
    }
    
}
